1. Technical Field
The present invention relates in general to data processing, and in particular, to asynchronous initiation of assist threads in a multi-threaded processor.
2. Description of the Related Art
Current processors employ a variety of features to improve performance, including the implementation of superscalar architecture, out-of-order instruction execution, and simultaneous multi-threading (SMT). In SMT, a processor simultaneously executes instructions within multiple independent hardware threads of execution, which may belong to a common program or different programs.
From a program's perspective, the multiple threads of execution supported by the processor hardware can be viewed as independent (virtual) processors, except that various privileged registers or other facilities of a given physical processor may be shared by multiple threads. The performance improvement observed by a program by virtue of SMT depends on the program's capacity for parallelism, that is, whether the overall work to be performed by the program is susceptible to being subdivided in multiple relatively independent units. In many instances, a program includes both sections in which a single thread or only a few threads are useful, as well as one or more additional code sections in which additional threads can be effectively used and after which the additional thread(s) can be released.
Before a program can utilize an additional thread, however, the program is typically required to first request permission to use the additional thread, for example, from a supervisory program that controls thread usage (e.g., an operating system or hypervisor (also referred to as a virtual machine monitor (VMM)). The communication of a request from a requesting program to a supervisory program to obtain permission to utilize an additional thread can be time-consuming, and the concomitant overhead may substantially diminish the performance benefit to the requesting program obtained through the use of the additional thread.